package com.example.sprintboot.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.sprintboot.entity.Product;
import com.example.sprintboot.vo.ProductBannerVO;
import com.example.sprintboot.vo.ProductDetailVO;

import java.util.List;

public interface ProductService {
    IPage<Product> getProductPage(int page, int pageSize, String keyword, Integer categoryId, Integer status);
    Product getProductById(Integer productId);
    boolean addProduct(Product product, Integer userId, String role);
    boolean updateProduct(Product product, Integer userId, String role);
    boolean deleteProduct(Integer productId, Integer userId, String role);
    
    // 获取轮播图商品
    List<ProductBannerVO> getBannerProducts();

    // 获取商品详情
    ProductDetailVO getProductDetailById(Integer productId);
    
    // 卖家相关方法
    List<Product> getProductsBySellerId(Integer sellerId);
    int getProductCountBySellerId(Integer sellerId);
    boolean updateProductStatus(Integer productId, Integer sellerId, String status);

    // 管理员端商品管理相关方法
    IPage<Product> adminListProducts(int page, int pageSize, String keyword, String status, Integer categoryId);
    void approveProduct(Long id);
    void rejectProduct(Long id);
    void onSaleProduct(Long id);
    void offSaleProduct(Long id);
    void updateProductByAdmin(Long id, Product product);
    void deleteProductByAdmin(Long id);

    boolean setBannerStatus(Long productId, boolean isBanner);
    int countBannerProducts();
} 